home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1998 #3 / Amiga Plus CD - 1998 - No. 3.iso / pd / spiele / progammon2.3 / dicetests / dice.docs next >
Text File  |  1997-12-08  |  4KB  |  81 lines

  1. Testing the Dice:
  2.  
  3. Have you ever noticed while playing ProGammon that sometimes the computer
  4. rolls exactly what it needs?  Have you ever thought that the dice are not
  5. truly random or that the program is just plain cheating!  To be honest,
  6. I was curious as to whether the dice are random so I wrote a small program
  7. to test them.  The dice tests convinced me so now let's see if I can
  8. convince you.
  9.  
  10. First off, the program uses the UNIX compatible SAS/C random number
  11. generating function called drand48().  It also uses the function
  12. srand48( seed ) to set the random number seed.  drand48() produces random
  13. numbers between the values of 0.0 and 1.0 but not including 1.0.  The 
  14. following is how I convert this value into a dice value:
  15.  
  16.     dice[ 1 ] = (int)( ceil( drand48() * 6.0 ) );
  17.     dice[ 2 ] = (int)( ceil( drand48() * 6.0 ) );
  18.     
  19. These 2 simple lines of C code are what controls the dice.  The RollDice()
  20. subroutine has no idea whether it is being called to roll the dice for you
  21. or for the Amiga.  It does not check to see who is on the bar or what
  22. points are blocked or whether it's the start of the game or the end.  All
  23. it does is just roll the dice.  The Amiga is not cheating just because it
  24. rolls a 6 to start the game or rolls doubles to end the game.  It has
  25. gotten lucky and if you play enough games I'm sure that you will get lucky
  26. too.  If you don't think the dice are random then I guess you should send
  27. your complaints to the people who wrote the drand48() function.  Before
  28. you do though, I think you should check out the output from my DiceTest
  29. program.  This proved to me that the drand48() function produces random
  30. numbers that are just as random as any set of dice.
  31.  
  32.  
  33.  
  34. DiceTest:
  35.  
  36. Included in this drawer are the results of a dice testing program that I
  37. wrote.  I ran the program 5 times and the results are in DiceTest1 to
  38. DiceTest5.  The source code for this program is available if you like.
  39.  
  40. The program rolls a set of dice 108 000 times to see if every combination
  41. is equally likely.  You should see each combination 1/36th of the time so
  42. you can expect to see about 3 000 entries for each.  The program produces
  43. a 6 x 6 table to show you the results.
  44.  
  45. Have you ever noticed the exact same thing being rolled twice in a row.
  46. Also, sometimes you will roll a 5 2 and then a 2 5.  With normal dice,
  47. either one of these events will occur 1/36th of the time.  This test
  48. checks for these 2 events which should occur about 3 000 times.
  49.  
  50. The next test checks for the same thing being rolled 3 times in a row.
  51. If the Amiga rolled double sixes 3 times in a row you would be more than
  52. just a little suspicious but this does occur with normal dice 1/1296th of
  53. the time.  In this test we should see this happen about 83 times.  
  54.  
  55. Checking for the frequency of doubles is the next test.  A normal pair of
  56. dice will come up with doubles approximately 1/6th of the time.  After
  57. 108 000 rolls you would expect there to be about 18 000 doubles.
  58.  
  59. Finally, the total amount rolled is computed.  Each roll in backgammon
  60. averages 8.167 when taking doubles into account so the total should be
  61. somewhere around 882 000 if the dice are legal.
  62.  
  63. I hope that seeing the results of this test will convince you that the
  64. dice used in ProGammon are 100% random.  Of course, there are going to be
  65. some people who are willing to agree that these dice are random but the
  66. ones in the game are not.  For this reason, ProGammon also compiles
  67. statistics while you play.  Both players average dice roll should start to
  68. approach the theoretical value of 8.167 within about 25 games.  Hopefully,
  69. this will help prove to you that the Amiga does not cheat and is merely
  70. playing a damn good game of backgammon!  Go ahead, see for yourself.
  71.  
  72. Every roll of the dice are saved in the gammon.prefs file after you
  73. complete at least one game and select Quit in the menus or close the game
  74. screen.  During the game you can select  Stats  in the menus to see the 
  75. averages for the games that you are presently playing.  By clicking on the
  76. right portion of the statistics screen you can also examine the stats saved
  77. in the gammon.prefs file.
  78.  
  79. After you play a large number of games you should be convinced that the
  80. dice are 100% legal.  Good luck!
  81.